/*File Name		: Point.h*/
/*Date			: 30-10-2012 */
/*Maker Name	: Jonathan Ery Pradana / 23512038*/
/*Mendeskripsikan definisi Class Point*/

#ifndef _POINT_H
#define _POINT_H

#define MAX_CHAR 100

#include "../ElementCal/ElementCal.h"

class Point : public ElementCal{
	private:
		int x;	//absis
		int y;	//ordinat
		
	public:
		/** 4 sekawan **/
		Point();
		/* Constructor: membuat Point default: x=0; y=0 */
		Point(int _x,int _y);
		/* Constructor: membuat Point berdasarkan parameter absis dan ordinat */
		Point(string);
		/* Constructor: membuat Point berdasarkan string */
		/* Prekondisi: format string sudah valid: "(x,y)" */
		Point(const Point&);
		/* Copy constructor */
		Point& operator=(const Point&);
		/* Overloading operator = */
		~Point();
		/* Destructor */
		
		/** Getter & Setter **/
		int GetX();
		/* Mengembalikan absis */
		int GetY();
		/* Mengembalikan ordinat */
		void SetX(int x);
		/* Mengeset absis sesuai parameter */
		/* I.S. Point sudah terbentuk */
		/* F.S. absis sesuai dengan parameter */
		void SetY(int y);
		/* Mengeset ordinat sesuai parameter */
		/* I.S. Point sudah terbentuk */
		/* F.S. ordinat sesuai dengan parameter */
		
		void Print();
		/* I.S. Point terdefinisi */
		/* F.S. Nilai Point ditulis ke layar beserta komponen-komponennya */
		/* Proses : Menulis nilai setiap komponen Point ke layar */
		void Read();
		/* I.S. Sembarang */
		/* F.S. Point terdefinisi */
		/* Proses : Membaca komponen Point dari masukan pengguna */
		string ToString();
		/* Mengembalikan Point dalam format "(x,y)" */
		void MakeFromString(string s);
		/* Membentuk Point dari elemen yang bertipe string */
		/* I.S. format string sesuai: "(x,y)" */
		/* F.S. Point terdefinisi */
};

#endif
